package so.sao.shop.supplier.dao.authorized;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import so.sao.shop.supplier.domain.authorized.Permission;

/**
 * 权限dao
 *
 * @author
 * @create 2017-07-08 21:35
 **/
@Mapper
public interface PermissionDao {

	public void insert(Permission permission);
	
    public List<Permission> findAll();
    public List<Permission> findByUserId(@Param("userId") Long userId);

    /**
     * 根据UserId查询用户菜单权限信息
     * @param id 用户id
     * @param type 菜单级别
     * @param permissionFlag 权限标记
     * @return
     */
    List<Permission> findMenuPermission(@Param("id")Long id,@Param("type")Long type,@Param("permissionFlag") String permissionFlag);
    
    public List<Permission> findAppointMenuPermission(@Param("userId") Long userId,@Param("parentId") Long parentId);
    /**
     * 查询角色包含的所有权限，并且返回是否选中
     * @param loginUserId
     * @param updateUserId		通过修改的用户查询
     * @param roleIds			通过角色查询
     * @return
     */
    public List<Permission> findRoleAllPermission(
    		@Param("loginUserId") Long loginUserId,
    		@Param("updateUserId") Long updateUserId,
    		@Param("roleIds") List<Long> roleIds);

    /**
     * 根据角色id查询角色拥有的所有权限
     * @param roleId        角色id
     * @return
     */
    public List<Permission> findByRoleId(@Param("roleId") Long roleId);
    /**
     * 查询供应商超级权限
     * @return
     */
    List<Long> findAccountTree();
}
